home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / demo / menu_v2.s < prev    next >
Text File  |  1997-01-31  |  37KB  |  1,617 lines

  1. main_sysinfooff
  2. main_reqinfooff
  3. main_endinfooff
  4. main_disabledos
  5. main_playeroff
  6. main_meteroff
  7.  
  8.         include    "demo:System/Main_V3.82.S"
  9.         
  10.         
  11.  
  12. mnu_start:    
  13.  
  14.         bsr.w    mnu_saveframe
  15.         bsr.w    mnu_copycredz
  16.         bsr.w    mnu_setscreen
  17.         move.l    a7,mnu_mainstack
  18.  
  19.  
  20.  
  21.         bsr.w    mnu_viewcredz
  22. mnu_loop:    lea    mnu_mainmenu,a0
  23.         bsr.w    mnu_domenu
  24.  
  25.         lea    mnu_quitmenu,a0
  26.         bsr.w    mnu_domenu
  27.         bra.w    mnu_loop
  28.  
  29. ;        bsr.w    mnu_getrawvalue
  30. ;        move.l    d0,test
  31.  
  32. mnu_exit:    bsr.w    mnu_clearscreen
  33.         rts
  34.  
  35. mnu_saveframe:    lea    mnu_frame,a0
  36.         lea    mnu_savedcredz,a1
  37.         move.l    #10*256*3-1,d0
  38. .loop:        move.l    (a0)+,(a1)+
  39.         dbra    d0,.loop        
  40.         lea    mnu_frame+40*32+4,a0
  41.         moveq.l    #8,d3
  42.         moveq.l    #0,d0
  43.         move.w    #191,d1
  44. .loop1:        moveq.l    #7,d2
  45. .loop2:        move.l    d0,(a0)+
  46.         move.l    d0,40*256-4(a0)
  47.         move.l    d0,40*2*256-4(a0)
  48.         dbra    d2,.loop2
  49.         add.l    d3,a0
  50.         dbra    d1,.loop1
  51.         rts
  52.  
  53. mnu_viewcredz:    clr.l    counter
  54.         bsr.w    mnu_copycredz
  55. .w8key:        bsr.w    key_readkey
  56.         cmp.l    #50*10,counter
  57.         beq.s    .exit
  58.         tst.w    d0
  59.         beq.s    .w8key
  60. .exit:        rts
  61.  
  62. mnu_copycredz:    lea    mnu_savedcredz,a0
  63.         lea    mnu_morescreen+40*256*3,a1
  64.         move.w    #10*256-1,d0
  65. .loop:        move.l    (a0)+,(a1)+
  66.         move.l    40*256-4(a0),40*256-4(a1)
  67.         move.l    2*40*256-4(a0),2*40*256-4(a1)
  68.         dbra    d0,.loop        
  69.         rts
  70.         
  71. mnu_clearscreen:bsr.w    mnu_fadeout
  72.         clr.l    main_vblint
  73. .loop1:        tst.w    mnu_bltbusy
  74.         bne.s    .loop1
  75.         bsr.w    key_kbdexit
  76.         clr.l    main_bltint
  77.         macro_sync
  78.         move.w    #$7de0,$dff096
  79.         rts
  80.  
  81. mnu_setscreen:    bsr.w    mnu_init
  82.         macro_sync
  83.         move.w    #$7de0,$dff096
  84.         move.w    #$8200!%110000000,$dff096
  85.         move.l    #mnu_copper,$dff080
  86.         move.w    #0,$dff088
  87.         bsr.w    key_kbdinit
  88.         move.l    #mnu_vblint,main_vblint        
  89.         bsr.w    mnu_fadein
  90.         rts
  91.  
  92. mnu_vblint:    bsr.w    mnu_movescreen
  93.         bsr.w    mnu_dofire
  94.         bsr.w    key_kbdlevel3
  95.         bsr.w    mnu_animcursor
  96.         bsr.w    mnu_plot
  97.         rts
  98.  
  99. mnu_init:    bsr.w    mnu_initrnd        ; Uses palette buffer
  100.         bsr.w    mnu_createpalette
  101.         tst.w    .cp
  102.         bne.s    .skipfs
  103.         lea    mnu_screen,a0
  104.         lea    mnu_screen+40*256,a1
  105.         lea    mnu_screen+40*256*2,a2
  106.         lea    mnu_screen+40*256*3,a3
  107.         move.w    #40*256/4-1,d1
  108. .fsloop:    move.l    (a1),d0
  109.         move.l    d0,(a2)+
  110.         move.l    d0,(a3)+
  111.         move.l    (a0)+,(a1)+
  112.         dbra    d1,.fsloop
  113. .skipfs:    st.b    .cp
  114. ;-------------------------------------------------------------- Clear screen --
  115.         lea    mnu_morescreen,a0
  116.         move.l    #40*256*3/16-1,d0
  117.         moveq.l    #0,d1
  118. .clrloop:    
  119.         REPT    4
  120.         move.l    d1,(a0)+
  121.         ENDR
  122.         dbra    d0,.clrloop                
  123.         bsr.w    mnu_cls
  124. ;--------------------------------------------------------------- Set bplptrs --
  125.         lea    mnu_bplptrs+2,a0
  126.         move.l    #mnu_screen,d0
  127.         moveq.l    #0,d1
  128.         bsr.w    .setbplptrs
  129.         move.l    #mnu_screen+40*256*2,d0
  130.         moveq.l    #0,d1
  131.         bsr.w    .setbplptrs
  132.         move.l    #mnu_morescreen,d0
  133.         moveq.l    #5,d1
  134.         bsr.s    .setbplptrs
  135. ;-------------------------------------------------------------- Init palette --
  136.         lea    mnu_palette,a2
  137.         moveq.l    #7,d0            ; #of banks-1
  138.         move.l    #$01060000,d6
  139.         move.l    #$01060200,d7
  140.         lea    mnu_colptrs,a0
  141.         lea    mnu_colptrs+33*4,a1
  142. .bankloop:    moveq.l    #31,d1            ; d1=#of colour/bank
  143.         move.l    d6,(a0)+
  144.         move.l    d7,(a1)+
  145.         move.w    #$0180,d5
  146. .colloop:    ;move.l    (a2)+,d2
  147.         clr.l    d2
  148.         move.l    d2,d3
  149.         and.l    #$f0f0f0,d2
  150.         lsr.l    #4,d2            ; x0x0x
  151.         lsl.b    #4,d2            ; x0xx0
  152.         lsl.w    #4,d2            ; xxx00
  153.         lsr.l    #8,d2            ; 00xxx
  154.         and.l    #$f0f0f,d3
  155.         lsl.b    #4,d3            ; x0xx0
  156.         lsl.w    #4,d3            ; xxx00
  157.         lsr.l    #8,d3            ; 00xxx
  158.         move.w    d5,(a0)+
  159.         move.w    d2,(a0)+
  160.         move.w    d5,(a1)+
  161.         move.w    d3,(a1)+
  162.         addq.w    #2,d5
  163.         dbra    d1,.colloop
  164.         add.l    #33*4,a0
  165.         add.l    #33*4,a1
  166.         add.l    #$2000,d6
  167.         add.l    #$2000,d7
  168.         dbra    d0,.bankloop
  169.         move.l    #-2,(a0)
  170.         rts
  171. .setbplptrs:    swap.w    d0
  172.         move.w    d0,(a0)
  173.         swap.w    d0
  174.         move.w    d0,4(a0)
  175.         addq.l    #8,a0
  176.         add.l    #40*256,d0
  177.         dbra    d1,.setbplptrs
  178.         rts
  179. .cp:        dc.w    0        
  180.  
  181. mnu_initrnd:    lea    mnu_palette+256,a1
  182.         move.w    #255,d0
  183. .parityloop:    move.b    d0,d1
  184.         and.w    #$1,d1
  185.         move.b    d0,d2
  186.         lsr.w    #2,d2
  187.         and.w    #$1,d2
  188.         eor.w    d2,d1
  189.         move.b    d0,d2
  190.         lsr.w    #3,d2
  191.         and.w    #$1,d2
  192.         eor.w    d2,d1
  193.         move.b    d0,d2
  194.         lsr.w    #5,d2
  195.         and.w    #$1,d2
  196.         eor.w    d2,d1
  197.         move.b    d1,-(a1)
  198.         dbra    d0,.parityloop
  199.         move.l    a1,a4            ; a4=Parity buffer
  200.         move.l    #'TBL!',d3        ; Random seed
  201.         lea    mnu_morescreen+6*40*256,a0
  202.         move.w    #40*256+8192-1,d0
  203. .loop:        moveq.l    #0,d1        ; d1=0
  204.         move.l    d3,d2        ; d2=Random seed
  205.         move.b    d2,d1        
  206.         and.b    #$fe,d2
  207.         move.b    (a4,d1.l),d1
  208.         or.b    d1,d2
  209.         ror.w    #1,d2
  210.         swap.w    d2
  211.         move.b    d2,d1        
  212.         and.b    #$fe,d2
  213.         move.b    (a4,d1.l),d1
  214.         or.b    d1,d2
  215.         ror.w    #1,d2
  216.         move.l    d2,d3
  217.         move.w    d2,d1
  218.         lsr.w    #8,d1
  219.         or.w    d1,d2
  220.         move.l    d2,d1
  221.         swap.w    d1
  222.         or.w    d1,d2
  223.         move.b    d2,(a0)+
  224.         dbra    d0,.loop
  225.         rts
  226.  
  227. mnu_movescreen:    move.w    mnu_screenpos,d0
  228.         and.w    #$ff,d0
  229.         mulu    #40,d0
  230.         add.l    #mnu_screen,d0
  231.         lea    mnu_bplptrs+2,a0
  232.         moveq.l    #1,d1
  233. .loop:        swap.w    d0
  234.         move.w    d0,(a0)
  235.         swap.w    d0
  236.         move.w    d0,4(a0)
  237.         addq.l    #8,a0
  238.         add.l    #40*256*2,d0
  239.         dbra    d1,.loop
  240.         subq.w    #1,mnu_screenpos
  241.         rts
  242.  
  243. mnu_createpalette:
  244.         lea    mnu_backpal,a0
  245.         lea    mnu_firepal,a1
  246.         lea    mnu_fontpal,a2
  247.         lea    mnu_palette+256*4,a3
  248.         move.w    #255,d0
  249. .loop:        move.w    d0,d1
  250.         and.w    #$e0,d1        
  251.         beq.s    .next
  252.         lsr.w    #5,d1
  253.         move.l    (a2,d1.w*4),-(a3)
  254.         bra.s    .cont
  255. .next:        move.w    d0,d1
  256.         and.w    #$1c,d1    
  257.         beq.s    .next1
  258.         lsr.w    #2,d1
  259.         move.l    (a1,d1.w*4),-(a3)
  260.         bra.s    .cont
  261. .next1:        move.w    d0,d1
  262.         and.w    #$3,d1
  263.         move.l    (a0,d1.w*4),-(a3)
  264. .cont:        dbra    d0,.loop
  265.         rts    
  266.  
  267.  
  268. mnu_fadespeed    =    16
  269.  
  270. mnu_fadein:    clr.w    mnu_fadefactor
  271.         moveq.l    #256/mnu_fadespeed-1,d0
  272. .loop:        move.l    d0,-(a7)
  273. .wsync:        cmp.b    #$80,$dff006
  274.         blt.s    .wsync
  275.         cmp.b    #$90,$dff006
  276.         bgt.s    .wsync
  277.         bsr.w    mnu_fade
  278. .wsync2:    cmp.b    #$a0,$dff006
  279.         blt.s    .wsync2
  280.         add.w    #mnu_fadespeed,mnu_fadefactor
  281.         move.l    (a7)+,d0
  282.         dbra    d0,.loop
  283.         move.w    #255,mnu_fadefactor
  284. .wsync3:    cmp.b    #$80,$dff006
  285.         blt.s    .wsync3
  286.         cmp.b    #$90,$dff006
  287.         bgt.s    .wsync3
  288.         bsr.w    mnu_fade
  289.         rts
  290.  
  291. mnu_fadeout:    move.w    #255,mnu_fadefactor
  292.         moveq.l    #256/mnu_fadespeed-1,d0
  293. .loop:        move.l    d0,-(a7)
  294.         bsr.w    mnu_docursor
  295. .wsync:        cmp.b    #$80,$dff006
  296.         blt.s    .wsync
  297.         cmp.b    #$90,$dff006
  298.         bgt.s    .wsync
  299.         bsr.w    mnu_fade
  300. .wsync2:    cmp.b    #$a0,$dff006
  301.         blt.s    .wsync2
  302.         sub.w    #mnu_fadespeed,mnu_fadefactor
  303.         move.l    (a7)+,d0
  304.         dbra    d0,.loop
  305.         clr.w    mnu_fadefactor
  306. .wsync3:    cmp.b    #$80,$dff006
  307.         blt.s    .wsync3
  308.         cmp.b    #$90,$dff006
  309.         bgt.s    .wsync3
  310.         bsr.w    mnu_fade
  311.         rts
  312.  
  313. mnu_fadefactor:    dc.w    0
  314.  
  315. mnu_fade:    lea    mnu_palette,a2
  316.         moveq.l    #7,d0
  317.         lea    mnu_colptrs+2,a0
  318.         lea    mnu_colptrs+2+33*4,a1
  319.         move.w    mnu_fadefactor,d7
  320.         move.l    #$f0f0f0,d5
  321.         move.l    #$ff,d6
  322. .bankloop:    moveq.l    #31,d1
  323.         addq.l    #4,a0
  324.         addq.l    #4,a1
  325. .colloop:    moveq.l    #0,d4
  326.         move.l    (a2)+,d2
  327.  
  328.     REPT    2
  329.         move.l    d2,d3
  330.         and.w    d6,d3
  331.         mulu    d7,d3
  332.         divu    d6,d3
  333.         move.b    d3,d4
  334.         ror.l    #8,d4
  335.         ror.l    #8,d2
  336.     ENDR
  337.         move.l    d2,d3
  338.         and.w    d6,d3
  339.         mulu    d7,d3
  340.         divu    d6,d3
  341.         move.b    d3,d4
  342.         ror.l    #8,d4
  343.         ror.l    #8,d4
  344.         move.l    d4,d3
  345.         and.l    d5,d3
  346.         lsr.l    #4,d3            ; x0x0x
  347.         lsl.b    #4,d3            ; x0xx0
  348.         lsl.w    #4,d3            ; xxx00
  349.         lsr.l    #8,d3            ; 00xxx
  350.         and.l    #$f0f0f,d4
  351.         move.w    d3,(a0)
  352.         lsl.b    #4,d4            ; x0xx0
  353.         lsl.w    #4,d4            ; xxx00
  354.         lsr.l    #8,d4            ; 00xxx
  355.         addq.l    #4,a0
  356.         move.w    d4,(a1)
  357.         addq.l    #4,a1
  358.         dbra    d1,.colloop
  359.         add.l    #33*4,a0
  360.         add.l    #33*4,a1
  361.         dbra    d0,.bankloop
  362.         rts
  363.  
  364.  
  365.  
  366.  
  367. mnu_printxy:;in:a0,d0,d1=Text ptr,XPos,YPos    (XPos in words YPos in pixels)
  368.         lea    mnu_font,a3
  369.         lea    mnu_font+176*40,a4
  370.         lea    mnu_font+176*40*2,a5
  371.         moveq.l    #40,d7
  372.         moveq.l    #20,d6
  373.         move.l    #40*16,d5
  374.         mulu    d7,d1
  375.         add.w    d0,d1
  376.         add.l    #mnu_morescreen+40*256*3,d1
  377.         move.l    d1,a1            ; a1=Ptr
  378.         move.l    a1,a2
  379. .loop:        move.b    (a0)+,d2
  380.         beq.s    .exit
  381.         move.l    mnu_printdelay,timer
  382. .w8a:        tst.l    timer
  383.         bne.s    .w8a
  384.         and.l    #$ff,d2
  385.         sub.w    #32,d2
  386.         bge.s    .ok
  387.         move.l    a2,a1
  388.         add.l    #20*40,a1
  389.         move.l    a1,a2
  390.         bra.s    .loop
  391. .ok:        divu    d6,d2
  392.         move.w    d2,d3        ; d3=Y
  393.         swap.w    d2        ; d2=X
  394.         mulu    d5,d3        ; d3=Y Addy
  395.         lsl.w    #1,d2
  396.         add.w    d2,d3        ; d3=Addy Offset
  397.         move.l    a1,a6
  398.         moveq.l    #15,d2
  399. .yloop:        move.w    (a3,d3.l),(a6)
  400.         move.w    (a4,d3.l),40*256(a6)
  401.         move.w    (a5,d3.l),40*256*2(a6)
  402.         add.l    d7,d3
  403.         add.l    d7,a6
  404.         dbra    d2,.yloop
  405.         addq.l    #2,a1
  406.         bra.s    .loop
  407. .exit:        rts
  408.  
  409. mnu_dofire:    btst.b    #0,main_counter+3
  410.         beq.s    .skip
  411.         rts
  412. .skip:        move.l    #mnu_bltint,main_bltint
  413.         move.w    $dff006,d0
  414.         add.w    d0,mnu_rnd
  415.         tst.b    $dff002
  416. .w8:        tst.w    mnu_bltbusy
  417.         bne.s    .w8
  418.         btst.b    #6,$dff002
  419.         bne.s    .w8
  420.         lea    mnu_sourceptrs,a0
  421.         move.l    (a0),d0
  422.         move.l    4(a0),(a0)
  423.         move.l    8(a0),4(a0)
  424.         move.l    d0,8(a0)
  425.         lea    $dff000,a6
  426.         st.b    mnu_bltbusy
  427.         move.w    #$0040,$9c(a6)            ; Clear BLT req
  428.         move.w    #$8040,$9a(a6)            ; Enable BLT int
  429.         move.w    #$8200!%1000000,$96(a6)        ; Enable blitter dma
  430.         bsr.w    mnu_bltint
  431.         rts
  432.  
  433. mnu_bltint:    bsr.w    .getrnd
  434.         lea    $dff000,a6
  435.         move.l    .passptr,a0
  436.         move.l    (a0),d0
  437.         beq.s    .last
  438.         addq.l    #4,.passptr
  439.         move.l    d0,a0
  440.         jmp    (a0)
  441. .last:        move.w    #$0040,$9a(a6)            ; Disable BLT int
  442.         move.w    #%1000000,$96(a6)        ; Disable blitter dma
  443.         move.l    #.passlist,.passptr
  444.         clr.w    mnu_bltbusy
  445.         rts
  446. .getrnd:    moveq.l    #0,d0
  447.         move.w    mnu_rnd,d0
  448.         and.l    #8190,d0
  449.         add.l    #mnu_morescreen+6*40*256,d0
  450.         move.l    d0,mnu_rndptr
  451.         addq.w    #5,mnu_rnd
  452.         rts
  453. .rnd:        dc.w    0
  454. .passptr:    dc.l    .passlist
  455. .passlist:    dc.l    mnu_pass1
  456.         dc.l    mnu_pass2
  457.         dc.l    mnu_pass3
  458.         dc.l    0
  459.  
  460. mnu_rnd:    dc.w    0
  461. mnu_bltbusy:    dc.w    0
  462.  
  463. mnu_speed    =    1
  464. mnu_size    =    256
  465.  
  466. mnu_subtract:    dc.l    0
  467. mnu_count:    dc.w    0
  468.  
  469. mnu_pass1:    clr.l    mnu_subtract
  470.         move.w    mnu_count,d0
  471.         addq.w    #1,mnu_count
  472.         and.w    #$3,d0
  473.         beq.s    .l1
  474.         cmp.w    #1,d0
  475.         bne.s    .normal
  476.         move.l    #-2,mnu_subtract
  477.         move.l    #$fff80000,$40(a6)        ; D=A+BC
  478.         bra.s    .cont
  479. .l1:        move.l    #$1ff80000,$40(a6)        ; D=A+BC
  480.         bra.s    .cont
  481. .normal:    move.l    #$0ff80000,$40(a6)        ; D=A+BC
  482. .cont:        move.l    #$ffffffff,$44(a6)        ; Masks A
  483.         move.l    #$00000000,$60(a6)        ; CB modulo
  484.         move.l    #$00000000,$64(a6)        ; AD modulo
  485.         move.l    #mnu_morescreen+mnu_speed*40,$48(a6) ; Source C
  486.         move.l    mnu_rndptr,$4c(a6)        ; Source B
  487.         move.l    mnu_sourceptrs,d0
  488.         sub.l    mnu_subtract,d0
  489.         move.l    d0,$50(a6)            ; Source A
  490.         move.l    #mnu_morescreen,$54(a6)        ; Dest D
  491.         move.w    #(mnu_size-mnu_speed)*64+20,$58(a6)    ; Size and trigger
  492.         rts
  493.  
  494. mnu_pass2:;    move.l    #$0ff80000,$40(a6)        ; D=A+BC
  495. ;        move.l    #$ffffffff,$44(a6)        ; Masks A
  496. ;        move.l    #$00000000,$60(a6)        ; CB modulo
  497. ;        move.l    #$00000000,$64(a6)        ; AD modulo
  498.         move.l    #mnu_morescreen+40*256+mnu_speed*40,$48(a6) ; Source C
  499.         move.l    mnu_rndptr,$4c(a6)        ; Source B
  500.         move.l    mnu_sourceptrs+4,d0
  501.         sub.l    mnu_subtract,d0
  502.         move.l    d0,$50(a6)            ; Source A
  503.         move.l    #mnu_morescreen+40*256,$54(a6)        ; Dest D
  504.         move.w    #(mnu_size-mnu_speed)*64+20,$58(a6)    ; Size and trigger
  505.         rts
  506.  
  507.  
  508. mnu_pass3:;    move.l    #$0ff80000,$40(a6)        ; D=A+BC
  509. ;        move.l    #$ffffffff,$44(a6)        ; Masks A
  510. ;        move.l    #$00000000,$60(a6)        ; CB modulo
  511. ;        move.l    #$00000000,$64(a6)        ; AD modulo
  512.         move.l    #mnu_morescreen+40*256*2+mnu_speed*40,$48(a6) ; Source C
  513.         move.l    mnu_rndptr,$4c(a6)        ; Source B
  514.         move.l    mnu_sourceptrs+8,d0
  515.         sub.l    mnu_subtract,d0
  516.         move.l    d0,$50(a6)            ; Source A
  517.         move.l    #mnu_morescreen+40*256*2,$54(a6)        ; Dest D
  518.         move.w    #(mnu_size-mnu_speed)*64+20,$58(a6)    ; Size and trigger
  519.         rts
  520.         
  521. mnu_cls:    lea    mnu_frame+40*256*3,a0
  522.         lea    mnu_morescreen+40*256*6,a1
  523.         move.w    #40*256*3/16-1,d0
  524. .loop:        
  525.         REPT    4
  526.         move.l    -(a0),-(a1)
  527.         ENDR                
  528.         dbra    d0,.loop
  529.         rts
  530.  
  531. mnu_animcursor:    btst    #0,main_counter+3
  532.         beq.s    .skip
  533.         move.l    mnu_frameptr,a0
  534.         move.b    (a0),mnu_arrow
  535.         tst.b    1(a0)
  536.         beq.s    .skip
  537.         cmp.b    #40,1(a0)
  538.         bhi.s    .ok
  539.         moveq.l    #0,d0
  540.         move.b    1(a0),d0
  541.         sub.l    d0,mnu_frameptr
  542. .ok:        addq.l    #1,mnu_frameptr
  543. .skip:        rts
  544.  
  545. mnu_domenu:;in:    a0=Menu ptr
  546.         bsr.w    key_flushbuffer
  547. .redraw:    move.l    a0,-(a7)
  548.         bsr.w    mnu_openmenu        ; Open new menu
  549.         move.l    (a7)+,a0
  550. .loop:        movem.l    a0,-(a7)
  551.         bsr.w    mnu_update
  552.         movem.l    (a7)+,a0
  553.         move.l    a0,-(a7)
  554.         bsr.w    mnu_waitmenu        ; Wait for option
  555.         move.l    (a7)+,a0
  556.         moveq.l    #0,d2
  557.         move.w    mnu_row,d2
  558.         divu    14(a0),d2
  559.         swap.w    d2
  560.         move.w    d2,mnu_currentsel
  561.         tst.l    d1
  562.         beq.s    .ok
  563.         cmp.w    #42,d1
  564.         beq.w    .left
  565.         cmp.w    #41,d1
  566.         beq.w    .right
  567. .ok:        cmp.w    #-1,d0            ; Esc ???
  568.         beq.w    .exit            ; Yepp exit
  569.         move.l    16(a0,d0.w*8),d1    ; Get option type
  570.         tst.l    d1            ; 0=Do Nothing ???
  571.         beq.s    .loop        
  572.         cmp.l    #1,d1            ; 1=Sub menu
  573.         beq.w    .newmenu
  574.         cmp.l    #2,d1            ; 2=Exit sub
  575.         beq.w    .exit
  576.         cmp.l    #3,d1
  577.         beq.w    .bsr
  578.         cmp.l    #4,d1
  579.         beq.w    .left
  580.         cmp.l    #5,d1
  581.         beq.w    .leftsl
  582.         cmp.l    #6,d1
  583.         beq.w    .jump
  584.         cmp.l    #7,d1
  585.         beq.w    .changemenu
  586.         cmp.l    #8,d1
  587.         beq.w    .doraw
  588.         cmp.l    #9,d1
  589.         beq.w    .doload
  590.         cmp.l    #10,d1
  591.         beq.w    .dosave
  592. .wrong:        move.l    #mnu_errcursanim,mnu_frameptr
  593.         bra.w    .loop            ; Strange option ??? Loop
  594. .dosave:    movem.l    d0-a6,-(a7)
  595.         move.l    20(a0,d0.w*8),a0
  596.         move.w    mnu_currentlevel,(a0)
  597.         bsr.w    mnu_savelevel
  598.         movem.l    (a7)+,d0-a6
  599.     ;    bra.w    .loop
  600.     bra.w    .exit
  601. .doload:    movem.l    d0-a6,-(a7)
  602.         move.l    20(a0,d0.w*8),a0
  603.         move.w    (a0),mnu_currentlevel
  604.         bsr.w    mnu_loadlevel
  605.         movem.l    (a7)+,d0-a6
  606.     ;bra.w    .loop
  607.     bra.w    .exit
  608. .doraw:        movem.l    d0-a6,-(a7)
  609.         move.l    #mnu_buttonanim,mnu_frameptr
  610.         move.l    20(a0,d0.w*8),a0
  611. .rawloop:    move.l    a0,-(a7)
  612.         bsr.w    mnu_getrawvalue
  613.         move.l    (a7)+,a0
  614.         cmp.w    (a0),d0
  615.         beq.s    .rawcont
  616.         cmp.w    #69,d0
  617.         beq.s    .rawcont
  618.         lea    mnu_rawkeys,a1
  619. .tstraw:    move.w    (a1)+,d1
  620.         cmp.w    #$ffff,d1
  621.         beq.s    .rawok
  622.         cmp.w    d0,d1
  623.         bne.s    .tstraw
  624.         move.l    #mnu_errbutanim,mnu_frameptr
  625.         bra.s    .rawloop
  626. .rawok:        move.w    d0,(a0)
  627. .rawcont:    move.l    #mnu_cursanim,mnu_frameptr
  628.         movem.l    (a7)+,d0-a6
  629.         bra.w    .loop
  630. .bsr:        movem.l    d0-a6,-(a7)
  631.         move.l    20(a0,d0.w*8),a0
  632.         jsr    (a0)
  633.         movem.l    (a7)+,d0-a6
  634.         bra.w    .redraw
  635. .jump:        move.l    20(a0,d0.w*8),a0
  636.         move.l    mnu_mainstack,a7
  637.         jmp    (a0)
  638. ;---------------------------------------------------------------------------
  639. .left:        move.l    16(a0,d0.w*8),d1
  640.         cmp.l    #4,d1
  641.         bne.s    .leftsl        
  642.         move.l    20(a0,d0.w*8),a1
  643.         move.l    10(a1),a2
  644.         move.w    8(a1),d0
  645.         add.w    d0,(a2)
  646.         bra.w    .loop
  647. .leftsl:    cmp.l    #5,d1
  648.         bne.w    .wrong
  649.         move.l    20(a0,d0.w*8),a1
  650.         move.l    6(a1),a2
  651.         addq.w    #1,(a2)
  652.         bra.w    .loop        
  653. .right:        move.l    16(a0,d0.w*8),d1
  654.         cmp.l    #4,d1
  655.         bne.s    .rightsl        
  656.         move.l    20(a0,d0.w*8),a1
  657.         move.l    10(a1),a2
  658.         move.w    8(a1),d0
  659.         sub.w    d0,(a2)
  660.         bra.w    .loop
  661. .rightsl:    cmp.l    #5,d1
  662.         bne.w    .wrong
  663.         move.l    20(a0,d0.w*8),a1
  664.         move.l    6(a1),a2
  665.         subq.w    #1,(a2)
  666.         bra.w    .loop
  667. ;------------------------------------------------------------------ New menu --
  668. .changemenu:    move.l    20(a0,d0.w*8),a0
  669.         bra.w    .redraw
  670. .newmenu:    move.l    a0,-(a7)
  671.         move.l    20(a0,d0.w*8),a0    ; Set new menu
  672.         bsr.w    mnu_domenu
  673.         move.l    (a7)+,a0
  674.         bra.w    .redraw
  675. .exit:        rts
  676.  
  677. mnu_openmenu:;in:a0=Ptr to menu
  678.         bsr.w    key_flushbuffer
  679.         move.w    mnu_currentlevel,d0
  680.         add.w    #65,d0
  681.         move.b    d0,mnu_mainleveltext
  682.         move.l    a0,-(a7)
  683.         move.l    #0,mnu_printdelay
  684.         bsr.w    mnu_cls
  685.         move.l    #35,timer
  686. .w8a:        tst.l    timer
  687.         bne.s    .w8a        
  688.         move.l    (a7)+,a0
  689.         move.l    a0,-(a7)
  690.         move.w    (a0),d0
  691.         move.w    2(a0),d1
  692.         move.l    4(a0),a0
  693.         bsr.w    mnu_printxy
  694.         move.l    (a7)+,a0
  695.         move.w    8(a0),mnu_curx
  696.         move.w    10(a0),mnu_cury
  697.         move.w    12(a0),mnu_spread
  698.         move.w    14(a0),mnu_items
  699.         move.w    14(a0),d0
  700.         mulu    #3000,d0
  701.         move.w    d0,mnu_row
  702.         move.w    d0,mnu_oldrow
  703.         bsr.w    mnu_update
  704.         rts
  705.  
  706. mnu_waitmenu:;out:    d0=Selection number
  707. ;        move.l    #mnu_cursanim,mnu_frameptr
  708.         clr.l    mnu_printdelay
  709.  
  710. .loop:        moveq.l    #0,d1
  711.         move.w    mnu_oldrow,d1
  712.         cmp.w    mnu_row,d1
  713.         beq.s    .skip
  714. ;        move.l    #mnu_cursanim,mnu_frameptr
  715.         divu    mnu_items,d1
  716.         swap.w    d1
  717.         mulu    mnu_spread,d1
  718.         add.w    mnu_cury,d1
  719.         move.w    mnu_curx,d0
  720.         lea    mnu_cleararrow,a0
  721.         bsr.w    mnu_printxy
  722. .skip:
  723.  
  724. .w8key:        bsr.w    mnu_docursor
  725.         bsr.w    key_readkey
  726.         tst.w    d0
  727.         beq.s    .w8key
  728.         cmp.b    #27,d0
  729.         beq.s    .exit
  730.         cmp.b    #129,d0        ; Down Arrow
  731.         beq.s    .down
  732.         cmp.b    #128,d0
  733.         beq.s    .up
  734.         cmp.b    #13,d0
  735.         beq.s    .quit
  736.         cmp.b    #32,d0
  737.         beq.s    .quit
  738.         cmp.b    #130,d0
  739.         beq.s    .sliderr
  740.         cmp.b    #131,d0
  741.         beq.s    .sliderl
  742.         move.l    #mnu_errcursanim,mnu_frameptr
  743.         bra.w    .loop
  744. .exit:        moveq.l    #-1,d0        ; Esc key
  745.         moveq.l    #0,d1
  746.         rts
  747. .sliderr:    moveq.l    #41,d1
  748.         bra.s    .cpcont
  749. .sliderl:    moveq.l    #42,d1
  750.         bra.s    .cpcont
  751. .quit:        moveq.l    #0,d1
  752. .cpcont:    move.w    mnu_row,d0
  753.         divu    mnu_items,d0
  754.         swap.w    d0
  755.         and.l    #$ffff,d0
  756.         rts
  757. .down:        addq.w    #1,mnu_row
  758.         bra.w    .loop
  759. .up:        subq.w    #1,mnu_row
  760.         bra.w    .loop
  761.  
  762. mnu_docursor:    moveq.l    #0,d1
  763.         move.w    mnu_row,d1
  764.         move.w    d1,mnu_oldrow
  765.         divu    mnu_items,d1
  766.         swap.w    d1
  767.         mulu    mnu_spread,d1
  768.         add.w    mnu_cury,d1
  769.         move.w    mnu_curx,d0
  770.         lea    mnu_arrow,a0
  771.         bsr.w    mnu_printxy
  772.         rts
  773.  
  774. mnu_docursor1:    moveq.l    #0,d1
  775.         move.w    mnu_row,d1
  776.         divu    mnu_items,d1
  777.         swap.w    d1
  778.         mulu    mnu_spread,d1
  779.         add.w    mnu_cury,d1
  780.         move.w    mnu_curx,d0
  781.         lea    mnu_arrow,a0
  782.         bsr.w    mnu_printxy
  783.         rts
  784.  
  785. mnu_update:;in: a0=Ptr to menu
  786.         move.w    14(a0),d7
  787.         subq.w    #1,d7
  788.         move.w    10(a0),d1        ; d1=YPos
  789.         move.w    8(a0),d0
  790.         move.l    a0,a1
  791.         add.l    #16,a1
  792. .itemloop:    move.l    (a1)+,d2
  793.         cmp.l    #4,d2            ; Slider ?
  794.         beq.s    .doslider
  795.         cmp.l    #5,d2            ; Slider ?
  796.         beq.s    .docycler
  797.         cmp.l    #8,d2
  798.         beq.s    .dorawkey
  799.         cmp.l    #9,d2
  800.         beq.s    .doloadlevel
  801.         cmp.l    #10,d2
  802.         beq.s    .doloadlevel
  803. .continue:    add.w    12(a0),d1
  804.         addq.l    #4,a1
  805.         dbra    d7,.itemloop
  806.         rts
  807. .doslider:    movem.l    d0-a6,-(a7)
  808.         move.l    (a1),a0            ; a0=Slider ptr
  809.         bsr.w    mnu_putslider    
  810.         movem.l    (a7)+,d0-a6
  811.         bra.s    .continue        
  812. .docycler:    movem.l    d0-a6,-(a7)
  813.         move.l    (a1),a0            ; a0=Cycler ptr
  814.         bsr.w    mnu_putcycler    
  815.         movem.l    (a7)+,d0-a6
  816.         bra.s    .continue
  817. .dorawkey:    movem.l    d0-a6,-(a7)
  818.         move.l    (a1),a0            ; a0=Ptr to value
  819.         move.w    (a0),d3
  820.         add.w    #132,d3
  821.         add.w    #2,d0
  822.         move.b    d3,mnu_rawprint
  823.         lea    mnu_rawprint,a0
  824.         bsr.w    mnu_printxy
  825.         movem.l    (a7)+,d0-a6
  826.         bra.s    .continue
  827. .doloadlevel:    movem.l    d0-a6,-(a7)
  828.         move.l    (a1),a0
  829.         move.w    (a0),d2            ; d0=Level no
  830.         add.w    #65,d2
  831.         move.b    d2,mnu_levelno
  832.         addq.w    #2,d0
  833.         lea    mnu_leveltext,a0
  834.         bsr.w    mnu_printxy
  835.         movem.l    (a7)+,d0-a6
  836.         bra.s    .continue
  837.  
  838. mnu_putslider:;in:    d0,d1,d7,a0=Xpos,Ypos,Spread,Slider ptr
  839.         add.w    (a0),d0
  840.         add.w    2(a0),d1
  841.         move.w    d0,.xpos
  842.         movem.l    d0-d1/a0,-(a7)
  843.         lea    mnu_leftslider,a0
  844.         bsr.w    mnu_printxy
  845.         movem.l    (a7)+,d0-d1/a0
  846.         addq.w    #2,d0
  847.         move.w    6(a0),d2
  848.         lsr.w    #4,d2
  849.         tst.w    d2
  850.         beq.s    .skip
  851.         move.w    d2,d4
  852.         movem.l    d0-d1/a0,-(a7)
  853.         lea    mnu_sliderspace,a0
  854.         move.l    a0,a1
  855.         subq.w    #1,d2
  856. .loop:        move.b    #59,(a1)+
  857.         dbra    d2,.loop
  858.         clr.b    (a1)
  859.         bsr.w    mnu_printxy
  860.         movem.l    (a7)+,d0-d1/a0
  861.         add.w    d4,d0
  862.         add.w    d4,d0
  863. .skip:        move.w    6(a0),d2
  864.         and.w    #$f,d2
  865.         beq.w    .skip2
  866.         move.w    d2,d5
  867.         subq.w    #1,d2
  868.         moveq.l    #0,d3
  869. .loop1:        ror.w    #1,d3
  870.         or.w    #$8000,d3
  871.         dbra    d2,.loop1
  872.         movem.l    d0-d1,-(a7)
  873.         mulu    d7,d1
  874.         add.w    d0,d1
  875.         add.l    #mnu_morescreen+40*256*3,d1
  876.         move.l    d1,a4            ; a4=Screen Ptr
  877.         movem.l    (a7)+,d0-d1
  878.         swap.w    d3
  879.         clr.w    d3
  880.         moveq.l    #15,d2
  881.         move.l    a4,a5
  882.         move.l    mnu_sliddat,a3
  883. .loop2:        move.l    (a3),d4
  884.         and.l    d3,d4
  885.         move.l    d4,(a4)
  886.         move.l    176*40(a3),d4
  887.         and.l    d3,d4
  888.         move.l    d4,40*256(a4)
  889.         move.l    176*40*2(a3),d4
  890.         and.l    d3,d4
  891.         move.l    d4,40*256*2(a4)
  892.         add.l    #40,a3
  893.         add.l    #40,a4
  894.         dbra    d2,.loop2
  895.         move.l    a5,a4
  896.         moveq.l    #15,d2
  897.         move.l    mnu_sliddat,a3
  898. .loop3:        move.l    2(a3),d4
  899.         lsr.l    d5,d4
  900.         or.l    d4,(a4)
  901.         move.l    2+176*40(a3),d4
  902.         lsr.l    d5,d4
  903.         or.l    d4,40*256(a4)
  904.         move.l    2+176*40*2(a3),d4
  905.         lsr.l    d5,d4
  906.         or.l    d4,40*256*2(a4)
  907.         add.l    #40,a3
  908.         add.l    #40,a4
  909.         dbra    d2,.loop3
  910.         bra.s    .cont1
  911. .skip2:        movem.l    d0/d1/a0,-(a7)
  912.         lea    mnu_rightslider,a0
  913.         bsr.w    mnu_printxy
  914.         movem.l    (a7)+,d0/d1/a0
  915. .cont1:        move.l    10(a0),a1        ; Value 2 change ptr
  916.         move.w    (a1),d0
  917.         cmp.w    #0,d0
  918.         bge.s    .ok1
  919.         moveq.l    #0,d0
  920. .ok1:        cmp.w    4(a0),d0
  921.         ble.s    .ok2
  922.         move.w    4(a0),d0
  923. .ok2:        move.w    d0,(a1)
  924.         mulu    6(a0),d0
  925.         divu    4(a0),d0        ; d0=Slider position X
  926.         sub.w    mnu_sliderwidth,d0
  927.         move.w    .xpos,d2
  928.         lsl.w    #3,d2
  929.         add.w    d2,d0
  930.         move.w    d0,d2
  931.         and.l    #$f,d2
  932.         lsr.w    #4,d0
  933.         lsl.w    #1,d0
  934.         addq.w    #2,d0
  935.         and.l    #$ffff,d0
  936.         mulu    d7,d1
  937.         add.l    d0,d1
  938.         add.l    #mnu_morescreen+40*256*3,d1
  939.         move.l    d1,a4            ; a1=Screen ptr
  940.         moveq.l    #15,d3
  941.         move.l    mnu_sliddat,a3
  942. .loop4:        move.l    6(a3),d4
  943.         lsr.l    d2,d4
  944.         or.l    d4,(a4)
  945.         move.l    6+176*40(a3),d4
  946.         lsr.l    d2,d4
  947.         or.l    d4,40*256(a4)
  948.         move.l    6+176*40*2(a3),d4
  949.         lsr.l    d2,d4
  950.         or.l    d4,40*256*2(a4)
  951.         add.l    #40,a3
  952.         add.l    #40,a4
  953.         dbra    d3,.loop4
  954.         rts
  955. .xpos:        dc.w    0
  956.  
  957. mnu_putcycler:;in:    d0,d1,a0=Xpos,Ypos,Spread,Cycler ptr
  958.         add.w    (a0),d0
  959.         add.w    2(a0),d1
  960.         move.l    6(a0),a1
  961.         moveq.l    #0,d2
  962.         move.w    (a1),d2
  963.         divu    4(a0),d2
  964.         swap.w    d2
  965.         move.w    d2,(a1)
  966.         move.l    10(a0,d2.w*4),a0
  967.         bsr.w    mnu_printxy
  968.         rts
  969.  
  970. mnu_plot:    lea    mnu_sines,a0
  971.         move.w    mnu_xsine0,d0
  972.         and.w    #1022,d0
  973.         move.w    (a0,d0.w),d1
  974.         move.w    mnu_xsine1,d0
  975.         and.w    #1022,d0
  976.         add.w    (a0,d0.w),d1
  977.         asr.w    #4,d1
  978.         add.w    #160,d1
  979.         move.w    mnu_ysine0,d0
  980.         and.w    #1022,d0
  981.         move.w    (a0,d0.w),d2
  982.         move.w    mnu_ysine1,d0
  983.         and.w    #1022,d0
  984.         add.w    (a0,d0.w),d2
  985.         asr.w    #4,d2
  986.         add.w    #128,d2
  987.         mulu    #40,d2
  988.         move.w    d1,d0
  989.         lsr.w    #3,d1
  990.         add.w    d1,d2
  991.         neg.w    d0
  992.         addq.w    #$7,d0
  993.         add.l    #mnu_morescreen,d2
  994.         move.l    d2,a0
  995.         bset.b    d0,(a0)
  996.         bset.b    d0,40*256(a0)
  997.         bset.b    d0,40*256*2(a0)
  998.         addq.w    #3,mnu_xsine0
  999.         subq.w    #4,mnu_xsine1
  1000.         addq.w    #5,mnu_ysine0
  1001.         subq.w    #2,mnu_ysine1
  1002.         rts
  1003.  
  1004. mnu_getrawvalue:;out:    d0=Raw value
  1005.         ; Waits until a key is pressed the returns the raw value
  1006.         bsr.w    mnu_docursor1
  1007.         tst.b    key_keypressed
  1008.         bne.s    mnu_getrawvalue
  1009. .loop:        bsr.w    mnu_docursor1
  1010.         tst.b    key_keypressed
  1011.         beq.s    .loop
  1012.         move.b    key_rawkey,d0
  1013.         and.l    #$ff,d0
  1014.         move.l    d0,-(a7)
  1015. .oloop:        bsr.w    mnu_docursor1
  1016.         tst.b    key_keypressed
  1017.         bne.s    .oloop
  1018.         bsr.w    key_flushbuffer
  1019.         move.w    #$ffff,mnu_oldrow
  1020.         move.l    (a7)+,d0
  1021.         rts
  1022.  
  1023. mnu_test4quit:    clr.w    mnu_quitflag
  1024.         bsr.w    mnu_docursor
  1025.         bsr.w    key_readkey
  1026.         cmp.w    #27,d0
  1027.         beq.s    .quit
  1028.         cmp.w    #13,d0
  1029.         beq.s    .quit
  1030.         cmp.w    #32,d0
  1031.         beq.s    .quit
  1032.         tst.w    d0
  1033.         beq.s    .skip
  1034.         move.l    #mnu_errcursanim,mnu_frameptr
  1035. .skip:        moveq.l    #-1,d0
  1036.         tst.w    d0
  1037.         rts
  1038. .quit:        st.b    mnu_quitflag
  1039.         moveq.l    #0,d0
  1040.         tst.w    d0
  1041.         rts        
  1042.  
  1043. mnu_quitflag:    dc.w    0
  1044.  
  1045. mnu_playgame:    cmp.w    #1,mnu_playtype        ; Is it 2 player master ???
  1046.         bne.w    .noplayermaster
  1047.         lea    mnu_2pmastermenu,a0
  1048.         bsr.w    mnu_domenu
  1049.         cmp.w    #1,mnu_currentsel
  1050.         bne.s    .rts
  1051.         bsr.w    mnu_cls
  1052.         lea    mnu_slavewaittext,a0
  1053.         moveq.l    #6,d0
  1054.         moveq.l    #60,d1
  1055.         bsr.w    mnu_printxy
  1056.         clr.w    mnu_spread
  1057.         move.w    #4,mnu_curx
  1058.         move.w    #140,mnu_cury
  1059.         bsr.w    mnu_wait4slave
  1060.         tst.w    mnu_quitflag
  1061.         beq.s    .playgame
  1062. .rts:        rts
  1063. .noplayermaster:cmp.w    #2,mnu_playtype
  1064.         bne.w    .playgame
  1065.         bsr.w    mnu_cls
  1066.         lea    mnu_masterwaittext,a0
  1067.         moveq.l    #6,d0
  1068.         moveq.l    #60,d1
  1069.         bsr.w    mnu_printxy
  1070.         clr.w    mnu_spread
  1071.         move.w    #4,mnu_curx
  1072.         move.w    #140,mnu_cury
  1073.         bsr.w    mnu_wait4master
  1074.         tst.w    mnu_quitflag
  1075.         beq.s    .playgame
  1076.         rts
  1077. .playgame:    bsr.w    mnu_clearscreen
  1078.         ;-------------------------------------- Jump to game here !! --
  1079.         move.w    mnu_playtype,d0
  1080.         lea    .playtypeptr,a0
  1081.         move.l    (a0,d0.w*4),a0
  1082.         jsr    (a0)
  1083.         bsr.w    mnu_setscreen
  1084.         rts
  1085. .playtypeptr:    dc.l    mnu_play1p
  1086.         dc.l    mnu_play2pMaster
  1087.         dc.l    mnu_play2pSlave
  1088.  
  1089.  
  1090. *******************************************************************************
  1091. *******************************************************************************
  1092. *******************************************************************************
  1093. *******************************************************************************
  1094.  
  1095. mnu_wait4slave:    ; Wait for the slave to connect.
  1096. .loop:        bsr.w    mnu_test4quit        ; Check for "cancel" (and cursor)
  1097.         beq.s    .rts            ; Cancel key was selected
  1098.  
  1099. ;.............. Do your tests here .................................
  1100. ;.............. if the slave connects just exit with a rts .........
  1101.  
  1102.     btst    #6,$bfe001
  1103.     bne.s    .loop
  1104. .loop1:    btst    #6,$bfe001
  1105.     beq.s    .loop1
  1106.  
  1107. .rts:        rts
  1108.  
  1109. *******************************************************************************
  1110.  
  1111. mnu_wait4master:; Wait for the master to connect.
  1112. .loop:        bsr.w    mnu_test4quit        ; Check for "cancel" (and cursor)
  1113.         beq.s    .rts            ; Cancel key was selected
  1114.  
  1115. ;.............. Do your tests here ..................................
  1116. ;.............. if the master connects just exit with a rts .........
  1117.  
  1118.     btst    #6,$bfe001
  1119.     bne.s    .loop
  1120. .loop1:    btst    #6,$bfe001
  1121.     beq.s    .loop1
  1122.  
  1123. .rts:        rts
  1124.  
  1125. *******************************************************************************
  1126.  
  1127. mnu_play1p:    ; Do the 1 player game stuff here
  1128.  
  1129. .loop:    btst    #6,$bfe001
  1130.     bne.s    .loop
  1131.  
  1132.         rts
  1133.  
  1134. *******************************************************************************
  1135.  
  1136. mnu_play2pMaster:; Do the 2 player master game stuff here
  1137.  
  1138. .loop:    btst    #6,$bfe001
  1139.     bne.s    .loop
  1140.  
  1141.         rts
  1142.  
  1143. *******************************************************************************
  1144.  
  1145. mnu_play2pSlave:; Do the 2 player slave game stuff here
  1146.  
  1147. .loop:    btst    #6,$bfe001
  1148.     bne.s    .loop
  1149.  
  1150.         rts
  1151.  
  1152. *******************************************************************************
  1153.  
  1154. mnu_loadlevel:    ; Level to load is in mnu_currentlevel.w
  1155.         ; Current menu item is in mnu_currentsel.w (0 based)
  1156.         rts
  1157.  
  1158. *******************************************************************************
  1159.  
  1160. mnu_savelevel:    ; Level to save is in mnu_currentlevel.w
  1161.            ; Current menu item is in mnu_currentsel.w (0 based)
  1162.               ; Or all saved levels in the mnu_levellist+n*2.w
  1163.         rts
  1164.  
  1165. *******************************************************************************
  1166.  
  1167.         include    "demo:System/KeyBoard.S"
  1168.  
  1169. ****************************************************************** Variables **
  1170.  
  1171. mnu_2plevel:    dc.w    0
  1172. mnu_currentsel:    dc.w    0    ; Containes the current menu item
  1173. mnu_currentlevel:
  1174. mnu_level:    dc.w    0    ; Current level choosen. 0=A,1=B...
  1175.  
  1176. mnu_playtype:    dc.w    0    ; Selected type of game. 0=1 player
  1177.                 ;             1=2 player master
  1178.                 ;             2=2 player slave
  1179. ;------------------------------------------------- Rawcodes for control keys --
  1180. mnu_rawkeys:    ;----------------------------- Here are all defined raw keys --
  1181. mnu_key00:    dc.w    $4f    ; Turn left
  1182. mnu_key01:    dc.w    $4e    ; Turn right
  1183. mnu_key02:    dc.w    $4c    ; Forwards
  1184. mnu_key03:    dc.w    $4d    ; Backwards
  1185. mnu_key04:    dc.w    101    ; Fire
  1186. mnu_key05:    dc.w    $40    ; Operate door
  1187. mnu_key06:    dc.w    97    ; Run
  1188. mnu_key07:    dc.w    103    ; Force sidestep
  1189. mnu_key08:    dc.w    57    ; Sidestep left
  1190. mnu_key09:    dc.w    58    ; Sidestep right
  1191. mnu_key10:    dc.w    34    ; Duck
  1192. mnu_key11:    dc.w    40    ; Look behind
  1193. mnu_key12:    dc.w    15    ; Jump
  1194. mnu_key13:    dc.w    27    ; Look up
  1195. mnu_key14:    dc.w    42    ; Look down
  1196. mnu_key15:    dc.w    41    ; Centre view
  1197. ;------------------------------------------- Put other reserved keys here !! --
  1198.         dc.w    69    ; Escape
  1199.         dc.w    1,2,3,4,5,6,7,8,9,10    ; Weapon selects
  1200.         dc.w    80    ; Zoom in on map
  1201.         dc.w    81    ; Zoom out on map
  1202.         dc.w    82    ; 4/8 Channel sound
  1203.         dc.w    83    ; Mono/Stereo sound
  1204.         dc.w    84    ; Recall message
  1205.         dc.w    85    ; Render quality
  1206.         dc.w    29    ; Map down left
  1207.         dc.w    30    ; Map down
  1208.         dc.w    31    ; Map down right
  1209.         dc.w    45    ; Map left
  1210.         dc.w    46    ; Center map
  1211.         dc.w    47    ; Map right
  1212.         dc.w    61    ; Map up left
  1213.         dc.w    62    ; Map up
  1214.         dc.w    63    ; Map up right
  1215.         dc.w    -1    ; End list with -1
  1216.  
  1217. mnu_levellist:;----------------------------- Current levels in the save list --
  1218. mnu_saved0:    dc.w    0        ; Level number for saved pos 0
  1219. mnu_saved1:    dc.w    1        
  1220. mnu_saved2:    dc.w    3
  1221. mnu_saved3:    dc.w    8
  1222. mnu_saved4:    dc.w    4
  1223. mnu_saved5:    dc.w    11
  1224.  
  1225. mnu_xsine0:    dc.w    0
  1226. mnu_xsine1:    dc.w    0
  1227. mnu_ysine0:    dc.w    0
  1228. mnu_ysine1:    dc.w    0
  1229.  
  1230. mnu_sines:
  1231.     dc.w    $0006,$0013,$001f,$002c,$0038,$0045,$0052,$005e,$006b,$0077
  1232.     dc.w    $0083,$0090,$009c,$00a9,$00b5,$00c1,$00ce,$00da,$00e6,$00f2
  1233.     dc.w    $00ff,$010b,$0117,$0123,$012f,$013b,$0147,$0153,$015f,$016a
  1234.     dc.w    $0176,$0182,$018d,$0199,$01a4,$01b0,$01bb,$01c6,$01d2,$01dd
  1235.     dc.w    $01e8,$01f3,$01fe,$0209,$0213,$021e,$0229,$0233,$023e,$0248
  1236.     dc.w    $0252,$025c,$0266,$0270,$027a,$0284,$028e,$0297,$02a1,$02aa
  1237.     dc.w    $02b4,$02bd,$02c6,$02cf,$02d8,$02e1,$02e9,$02f2,$02fa,$0303
  1238.     dc.w    $030b,$0313,$031b,$0323,$032a,$0332,$0339,$0341,$0348,$034f
  1239.     dc.w    $0356,$035d,$0364,$036a,$0371,$0377,$037d,$0383,$0389,$038f
  1240.     dc.w    $0395,$039a,$039f,$03a5,$03aa,$03af,$03b4,$03b8,$03bd,$03c1
  1241.     dc.w    $03c5,$03c9,$03cd,$03d1,$03d5,$03d8,$03dc,$03df,$03e2,$03e5
  1242.     dc.w    $03e7,$03ea,$03ed,$03ef,$03f1,$03f3,$03f5,$03f7,$03f8,$03f9
  1243.     dc.w    $03fb,$03fc,$03fd,$03fd,$03fe,$03ff,$03ff,$03ff,$03ff,$03ff
  1244.     dc.w    $03ff,$03fe,$03fd,$03fd,$03fc,$03fb,$03f9,$03f8,$03f7,$03f5
  1245.     dc.w    $03f3,$03f1,$03ef,$03ed,$03ea,$03e7,$03e5,$03e2,$03df,$03dc
  1246.     dc.w    $03d8,$03d5,$03d1,$03cd,$03c9,$03c5,$03c1,$03bd,$03b8,$03b4
  1247.     dc.w    $03af,$03aa,$03a5,$039f,$039a,$0395,$038f,$0389,$0383,$037d
  1248.     dc.w    $0377,$0371,$036a,$0364,$035d,$0356,$034f,$0348,$0341,$0339
  1249.     dc.w    $0332,$032a,$0323,$031b,$0313,$030b,$0303,$02fa,$02f2,$02e9
  1250.     dc.w    $02e1,$02d8,$02cf,$02c6,$02bd,$02b4,$02aa,$02a1,$0297,$028e
  1251.     dc.w    $0284,$027a,$0270,$0266,$025c,$0252,$0248,$023e,$0233,$0229
  1252.     dc.w    $021e,$0213,$0209,$01fe,$01f3,$01e8,$01dd,$01d2,$01c6,$01bb
  1253.     dc.w    $01b0,$01a4,$0199,$018d,$0182,$0176,$016a,$015f,$0153,$0147
  1254.     dc.w    $013b,$012f,$0123,$0117,$010b,$00ff,$00f2,$00e6,$00da,$00ce
  1255.     dc.w    $00c1,$00b5,$00a9,$009c,$0090,$0083,$0077,$006b,$005e,$0052
  1256.     dc.w    $0045,$0038,$002c,$001f,$0013,$0006,$fffa,$ffed,$ffe1,$ffd4
  1257.     dc.w    $ffc8,$ffbb,$ffae,$ffa2,$ff95,$ff89,$ff7d,$ff70,$ff64,$ff57
  1258.     dc.w    $ff4b,$ff3f,$ff32,$ff26,$ff1a,$ff0e,$ff01,$fef5,$fee9,$fedd
  1259.     dc.w    $fed1,$fec5,$feb9,$fead,$fea1,$fe96,$fe8a,$fe7e,$fe73,$fe67
  1260.     dc.w    $fe5c,$fe50,$fe45,$fe3a,$fe2e,$fe23,$fe18,$fe0d,$fe02,$fdf7
  1261.     dc.w    $fded,$fde2,$fdd7,$fdcd,$fdc2,$fdb8,$fdae,$fda4,$fd9a,$fd90
  1262.     dc.w    $fd86,$fd7c,$fd72,$fd69,$fd5f,$fd56,$fd4c,$fd43,$fd3a,$fd31
  1263.     dc.w    $fd28,$fd1f,$fd17,$fd0e,$fd06,$fcfd,$fcf5,$fced,$fce5,$fcdd
  1264.     dc.w    $fcd6,$fcce,$fcc7,$fcbf,$fcb8,$fcb1,$fcaa,$fca3,$fc9c,$fc96
  1265.     dc.w    $fc8f,$fc89,$fc83,$fc7d,$fc77,$fc71,$fc6b,$fc66,$fc61,$fc5b
  1266.     dc.w    $fc56,$fc51,$fc4c,$fc48,$fc43,$fc3f,$fc3b,$fc37,$fc33,$fc2f
  1267.     dc.w    $fc2b,$fc28,$fc24,$fc21,$fc1e,$fc1b,$fc18,$fc16,$fc13,$fc11
  1268.     dc.w    $fc0f,$fc0d,$fc0b,$fc09,$fc08,$fc07,$fc05,$fc04,$fc03,$fc03
  1269.     dc.w    $fc02,$fc01,$fc01,$fc01,$fc01,$fc01,$fc01,$fc02,$fc03,$fc03
  1270.     dc.w    $fc04,$fc05,$fc07,$fc08,$fc09,$fc0b,$fc0d,$fc0f,$fc11,$fc13
  1271.     dc.w    $fc16,$fc19,$fc1b,$fc1e,$fc21,$fc24,$fc28,$fc2b,$fc2f,$fc33
  1272.     dc.w    $fc37,$fc3b,$fc3f,$fc43,$fc48,$fc4c,$fc51,$fc56,$fc5b,$fc61
  1273.     dc.w    $fc66,$fc6b,$fc71,$fc77,$fc7d,$fc83,$fc89,$fc8f,$fc96,$fc9c
  1274.     dc.w    $fca3,$fcaa,$fcb1,$fcb8,$fcbf,$fcc7,$fcce,$fcd6,$fcdd,$fce5
  1275.     dc.w    $fced,$fcf5,$fcfd,$fd06,$fd0e,$fd17,$fd1f,$fd28,$fd31,$fd3a
  1276.     dc.w    $fd43,$fd4c,$fd56,$fd5f,$fd69,$fd72,$fd7c,$fd86,$fd90,$fd9a
  1277.     dc.w    $fda4,$fdae,$fdb8,$fdc2,$fdcd,$fdd7,$fde2,$fded,$fdf7,$fe02
  1278.     dc.w    $fe0d,$fe18,$fe23,$fe2e,$fe3a,$fe45,$fe50,$fe5c,$fe67,$fe73
  1279.     dc.w    $fe7e,$fe8a,$fe96,$fea1,$fead,$feb9,$fec5,$fed1,$fedd,$fee9
  1280.     dc.w    $fef5,$ff01,$ff0e,$ff1a,$ff26,$ff32,$ff3f,$ff4b,$ff57,$ff64
  1281.     dc.w    $ff70,$ff7d,$ff89,$ff95,$ffa2,$ffae,$ffbb,$ffc8,$ffd4,$ffe1
  1282.     dc.w    $ffed,$fffa
  1283.  
  1284. mnu_mainstack:    dc.l    0
  1285.  
  1286. ;--------------------------------------------------------------- Slider data --
  1287.  
  1288. mnu_sliderwidth:dc.w    6
  1289. mnu_sliddat:    dc.l    mnu_font+40*16+7*2
  1290. mnu_leftslider:    dc.b    58,0
  1291. mnu_sliderspace:blk.b    20,0
  1292. mnu_rightslider:dc.b    60,0
  1293. mnu_rawprint:    dc.b    0,0
  1294.         even
  1295. ;----------------------------------------------------------------- Menu data --
  1296.  
  1297. mnu_curx:    dc.w    5
  1298. mnu_cury:    dc.w    78
  1299. mnu_spread:    dc.w    40
  1300. mnu_items:    dc.w    3
  1301.  
  1302. mnu_arrow:    dc.b    ' ',0
  1303. mnu_cleararrow:    dc.b    ' ',0
  1304. mnu_row:    dc.w    30000
  1305. mnu_oldrow:    dc.w    30000
  1306. mnu_screenpos:    dc.w    0
  1307.  
  1308. mnu_printdelay:    dc.l    2
  1309.  
  1310. ;----------------------------------------------------------------- Fire data --
  1311.  
  1312. mnu_rndptr:    dc.l    mnu_morescreen+6*40*256
  1313. mnu_sourceptrs:    dc.l    mnu_morescreen+3*40*256+mnu_speed*40
  1314.         dc.l    mnu_morescreen+4*40*256+mnu_speed*40
  1315.         dc.l    mnu_morescreen+5*40*256+mnu_speed*40
  1316.  
  1317. ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Menues %%
  1318.  
  1319. ; Types:    0 = Do nothing
  1320. ;        1 = Sub menu
  1321. ;        2 = Exit sub menu
  1322. ;        3 = Execute subroutine
  1323. ;               4 = Slider
  1324. ;               5 = Cycler
  1325. ;        6 = Branch (SP) set to value in mnu_mainstack
  1326. ;        7 = Change menu
  1327. ;        8 = Get raw key
  1328. ;        9 = Level Load
  1329. ;              10 = Level Save
  1330.  
  1331. mnu_mainmenu:    dc.w    6,12            ; X,Y
  1332.         dc.l    mnu_maintext        ; Text ptr
  1333.         dc.w    4,70            ; XCursor,YCursor
  1334.         dc.w    20            ; Spread
  1335.         dc.w    7            ; Items
  1336.         dc.l    5,mnu_playercycler    ; Change player type
  1337.         dc.l    3,mnu_playgame
  1338.         dc.l    1,mnu_controlmenu0
  1339.         dc.l    3,mnu_viewcredz
  1340.         dc.l    1,mnu_loadmenu
  1341.         dc.l    1,mnu_savemenu
  1342.         dc.l    2,0            ; 2=Exit sub menu (Esc)
  1343.  
  1344. mnu_controlmenu0:dc.w    6,32            ; X,Y
  1345.         dc.l    mnu_controltext0    ; Text ptr
  1346.         dc.w    4,50            ; XCursor,YCursor
  1347.         dc.w    20            ; Spread
  1348.         dc.w    9            ; Items
  1349.         dc.l    8,mnu_key00
  1350.         dc.l    8,mnu_key01
  1351.         dc.l    8,mnu_key02
  1352.         dc.l    8,mnu_key03
  1353.         dc.l    8,mnu_key04
  1354.         dc.l    8,mnu_key05
  1355.         dc.l    8,mnu_key06
  1356.         dc.l    8,mnu_key07
  1357.         dc.l    7,mnu_controlmenu1
  1358.  
  1359. mnu_controlmenu1:dc.w    6,32            ; X,Y
  1360.         dc.l    mnu_controltext1    ; Text ptr
  1361.         dc.w    4,50            ; XCursor,YCursor
  1362.         dc.w    20            ; Spread
  1363.         dc.w    9            ; Items
  1364.         dc.l    8,mnu_key08
  1365.         dc.l    8,mnu_key09
  1366.         dc.l    8,mnu_key10
  1367.         dc.l    8,mnu_key11
  1368.         dc.l    8,mnu_key12
  1369.         dc.l    8,mnu_key13
  1370.         dc.l    8,mnu_key14
  1371.         dc.l    8,mnu_key15
  1372.         dc.l    7,mnu_controlmenu2
  1373.  
  1374. mnu_controlmenu2:dc.w    4,12            ; X,Y
  1375.         dc.l    mnu_controltext2    ; Text ptr
  1376.         dc.w    4,210            ; XCursor,YCursor
  1377.         dc.w    20            ; Spread
  1378.         dc.w    1            ; Items
  1379.         dc.l    7,mnu_controlmenu0
  1380.  
  1381. mnu_loadmenu:    dc.w    4,42
  1382.         dc.l    mnu_loadmenutext
  1383.         dc.w    4,80            ; XCursor,YCursor
  1384.         dc.w    20            ; Spread
  1385.         dc.w    7            ; Items
  1386.         dc.l    9,mnu_saved0
  1387.         dc.l    9,mnu_saved1
  1388.         dc.l    9,mnu_saved2
  1389.         dc.l    9,mnu_saved3
  1390.         dc.l    9,mnu_saved4
  1391.         dc.l    9,mnu_saved5
  1392.         dc.l    2,0
  1393.  
  1394. mnu_savemenu:    dc.w    4,42
  1395.         dc.l    mnu_savemenutext
  1396.         dc.w    4,80            ; XCursor,YCursor
  1397.         dc.w    20            ; Spread
  1398.         dc.w    7            ; Items
  1399.         dc.l    10,mnu_saved0
  1400.         dc.l    10,mnu_saved1
  1401.         dc.l    10,mnu_saved2
  1402.         dc.l    10,mnu_saved3
  1403.         dc.l    10,mnu_saved4
  1404.         dc.l    10,mnu_saved5
  1405.         dc.l    2,0
  1406.  
  1407. mnu_quitmenu:    dc.w    4,82
  1408.         dc.l    mnu_quitmenutext
  1409.         dc.w    4,120            ; XCursor,YCursor
  1410.         dc.w    20            ; Spread
  1411.         dc.w    2            ; Items
  1412.         dc.l    6,mnu_loop
  1413.         dc.l    6,mnu_exit
  1414.  
  1415. mnu_2pmastermenu:
  1416.         dc.w    4,82
  1417.         dc.l    mnu_2pmastertext
  1418.         dc.w    4,120            ; XCursor,YCursor
  1419.         dc.w    20            ; Spread
  1420.         dc.w    3            ; Items
  1421.         dc.l    5,mnu_levelcycler
  1422.         dc.l    2,0
  1423.         dc.l    2,0
  1424.  
  1425. ;--------------------------------------------------------------------- Texts --
  1426. mnu_slavewaittext:
  1427.         dc.b    'Waiting for ',1
  1428.         dc.b    'your opponent',1
  1429.         dc.b    'to respond...',1,1
  1430.         dc.b    58,58,'Cancel',0
  1431.  
  1432. mnu_masterwaittext:
  1433.         dc.b    'Waiting for ',1
  1434.         dc.b    'your opponent',1
  1435.         dc.b    'to respond...',1,1
  1436.         dc.b    58,58,'Cancel',0
  1437.  
  1438. mnu_maintext:    dc.b    1,1
  1439.         dc.b    60,'Level '
  1440. mnu_mainleveltext:dc.b    'A',58,1        
  1441.         dc.b    1
  1442.         dc.b    'Play game',1
  1443.         dc.b    'Control options',1
  1444.         dc.b    'Game credits',1
  1445.         dc.b    'Load position',1
  1446.         dc.b    'Save position',1
  1447. '        dc.b    'Quit',1
  1448.         dc.b    0
  1449.  
  1450. mnu_quitmenutext:dc.b    ' Quit game',131,131,131,1,1
  1451.         dc.b    ' No,I',39,'m addicted',1
  1452.         dc.b    ' Yes! Let me OUT',1
  1453.         dc.b    0
  1454.  
  1455. mnu_2pmastertext:dc.b    ' 2 Player master',1,1
  1456.         dc.b    ' Play level',1
  1457.         dc.b    ' Start game',1
  1458.         dc.b    ' ',58,58,'Cancel',1
  1459.         dc.b    0
  1460.  
  1461. mnu_loadmenutext:dc.b    ' Load game',1,1
  1462.         dc.b    1,1,1,1,1,1
  1463.         dc.b    ' ',58,58,'Cancel',58,58,0
  1464.  
  1465. mnu_savemenutext:dc.b    ' Save game',1,1
  1466.         dc.b    1,1,1,1,1,1
  1467.         dc.b    ' ',58,58,'Cancel',58,58,0
  1468.         
  1469. mnu_controltext0:dc.b    1
  1470.         dc.b    ' Turn left',1
  1471.         dc.b    ' Turn right',1
  1472.         dc.b    ' Forwards',1
  1473.         dc.b    ' Backwards',1
  1474.         dc.b    ' Fire',1
  1475.         dc.b    ' Operate door',1
  1476.         dc.b    ' Run',1
  1477.         dc.b    ' Sidestep',1
  1478.         dc.b    60,60,'More',60,60,1
  1479.         dc.b    0
  1480.  
  1481. mnu_controltext1:dc.b    1
  1482.         dc.b    ' Sidestep left',1
  1483.         dc.b    ' Sidestep right',1
  1484.         dc.b    ' Duck',1
  1485.         dc.b    ' Look behind',1
  1486.         dc.b    ' Jump',1
  1487.         dc.b    ' Look up',1
  1488.         dc.b    ' Look down',1
  1489.         dc.b    ' Centre view',1
  1490.         dc.b    60,60,'Others',60,60,1
  1491.         dc.b    0
  1492.  
  1493. mnu_controltext2:dc.b    1
  1494.         dc.b    157,'Pause',1
  1495.         dc.b    212,'Zoom in on map',1
  1496.         dc.b    213,'Zoom out on map',1
  1497.         dc.b    214,'4/8 Ch. sound',1
  1498.         dc.b    215,'Mono/Stereo snd',1
  1499.         dc.b    216,'Recall message',1
  1500.         dc.b    217,'Render quality',1
  1501.         dc.b    133,'-',142,'Select weapon',1
  1502.         dc.b    161,'-',195,'Scroll map',1
  1503.         dc.b    ' ',58,58,'Back',58,58,1
  1504.         dc.b    0
  1505.  
  1506. mnu_leveltext:    dc.b    'Level '
  1507. mnu_levelno:    dc.b    'A',0
  1508.  
  1509.         even
  1510. ;------------------------------------------------------- Cyclers and sliders --
  1511.  
  1512. mnu_level0:    dc.b    'A',0
  1513. mnu_level1:    dc.b    'B',0
  1514. mnu_level2:    dc.b    'C',0
  1515. mnu_level3:    dc.b    'D',0
  1516. mnu_level4:    dc.b    'E',0
  1517. mnu_level5:    dc.b    'F',0
  1518. mnu_level6:    dc.b    'G',0
  1519. mnu_level7:    dc.b    'H',0
  1520. mnu_level8:    dc.b    'I',0
  1521. mnu_level9:    dc.b    'J',0
  1522. mnu_level10:    dc.b    'K',0
  1523. mnu_level11:    dc.b    'L',0
  1524. mnu_level12:    dc.b    'M',0
  1525. mnu_level13:    dc.b    'N',0
  1526. mnu_level14:    dc.b    'O',0
  1527. mnu_level15:    dc.b    'P',0
  1528.         even
  1529.  
  1530. mnu_levelcycler:dc.w    24,2            ; X,Y Add
  1531.         dc.w    16            ; #of items
  1532.         dc.l    mnu_2plevel        ; Value to effect
  1533.         dc.l    mnu_level0
  1534.         dc.l    mnu_level1
  1535.         dc.l    mnu_level2
  1536.         dc.l    mnu_level3
  1537.         dc.l    mnu_level4
  1538.         dc.l    mnu_level5
  1539.         dc.l    mnu_level6
  1540.         dc.l    mnu_level7
  1541.         dc.l    mnu_level8
  1542.         dc.l    mnu_level9
  1543.         dc.l    mnu_level10
  1544.         dc.l    mnu_level11
  1545.         dc.l    mnu_level12
  1546.         dc.l    mnu_level13
  1547.         dc.l    mnu_level14
  1548.         dc.l    mnu_level15
  1549.         even
  1550.  
  1551. mnu_playercycler:dc.w    2,2            ; X,Y Add
  1552.         dc.w    3            ; #of items
  1553.         dc.l    mnu_playtype        ; Value to effect
  1554.         dc.l    mnu_playtype0
  1555.         dc.l    mnu_playtype1
  1556.         dc.l    mnu_playtype2
  1557.         even
  1558.  
  1559. mnu_playtype0:    dc.b    '1 Player       ',0
  1560. mnu_playtype1:    dc.b    '2 Player master',0
  1561. mnu_playtype2:    dc.b    '2 Player slave ',0
  1562.  
  1563. ;----------------------------------------------------------------- Animation --
  1564.         
  1565. mnu_frameptr:    dc.l    mnu_cursanim
  1566.  
  1567. mnu_errcursanim:dc.b    240,240,241,241,242,242,243,243
  1568.         dc.b    240,240,241,241,242,242,243,243
  1569.         dc.b    240,240,241,241,242,242,243,243
  1570.         dc.b    240,240,241,241,242,242,243,243
  1571. mnu_cursanim:    dc.b    130,129,128,127,126,125,124,123,8
  1572.         even
  1573.  
  1574. mnu_errbutanim:    dc.b    240,240,241,241,242,242,243,243
  1575.         dc.b    240,240,241,241,242,242,243,243
  1576.         dc.b    240,240,241,241,242,242,243,243
  1577.         dc.b    240,240,241,241,242,242,243,243
  1578. mnu_buttonanim:    dc.b    236,236,236 ,236
  1579.         dc.b    237,237,237,237
  1580.         dc.b    238,238,238,238
  1581.         dc.b    239,239,239,239
  1582.         dc.b    238,238,238,238
  1583.         dc.b    237,237,237,237
  1584.         dc.b    24
  1585.  
  1586.         even
  1587. mnu_font:    incbin    "demo:Menu/Font16x16.Raw2"
  1588. mnu_fontpal:    incbin    "demo:Menu/Font16x16.Pal2"
  1589. mnu_firepal:    incbin    "Demo:Menu/FirePal.Pal2"
  1590. mnu_backpal:    incbin    "demo:Menu/Back.Pal"
  1591.  
  1592. mnu_palette:    blk.l    256
  1593.  
  1594. mnu_frame:    incbin    "demo:Menu/Credits.Raw"
  1595.  
  1596.         section    data_b,bss
  1597.  
  1598. mnu_savedcredz:    ds.b    40*256*3
  1599.  
  1600.         section    data_c,data_c
  1601.  
  1602. mnu_copper:    dc.l    $01000211,$01020000,$01040000
  1603.         dc.l    $0108fff8,$010afff8,$010c0000
  1604.         dc.l    $01fc0003
  1605.         dc.l    $008e2881,$009028c1,$00920038,$009400d0
  1606. mnu_bplptrs:    dc.l    $00e00000,$00e20000,$00e40000,$00e60000
  1607.         dc.l    $00e80000,$00ea0000,$00ec0000,$00ee0000
  1608.         dc.l    $00f00000,$00f20000,$00f40000,$00f60000
  1609.         dc.l    $00f80000,$00fa0000,$00fc0000,$00fe0000
  1610. mnu_colptrs:    blk.l    (32+1)*8*2+1
  1611.         cnop    64,64
  1612.  
  1613. mnu_screen:    incbin    "Demo:Menu/Back2.Raw"
  1614.         ds.b    40*256*2
  1615.  
  1616. mnu_morescreen:    ds.b    40*256*8
  1617.